/**
 * 项目模块业务逻辑
 * 注：此文件仅保留与OA系统相关的基本功能，研发项目管理相关功能已移至PLM系统
 */

// 引入依赖
const baseHelper = require('../../../../helpers/base_helper.js');
const timeHelper = require('../../../../helpers/time_helper.js');
const pageHelper = require('../../../../helpers/page_helper.js');
const cacheHelper = require('../../../../helpers/cache_helper.js');
const projectHelper = require('../../../../helpers/project_helper.js');

/**
 * 项目业务模块
 */
class ProjectBiz {

	/**
	 * 初始化页面，公共方法
	 * @param {*} that 页面实例
	 */
	static initPage(that) {
		// 设置页面标题
		wx.setNavigationBarTitle({
			title: "ABS办公协作"
		});
	}

	/**
	 * 获取项目颜色标识
	 * @param {*} type 项目类型
	 */
	static getProjectColor(type) {
		switch (type) {
			case 'normal': return 'blue';
			case 'urgent': return 'red';
			case 'important': return 'orange';
			default: return 'grey';
		}
	}

	/**
	 * 跳转至PLM系统研发项目管理
	 * 此方法用于从OA系统跳转到PLM系统
	 */
	static gotoPLM() {
		try {
			// 设置当前项目为PLM
			projectHelper.setCurrentProject('plm');
			
			// 使用新的路由系统导航
			wx.navigateTo({
				url: '/projects/plm/pages/default/index/default_index?timeout=10000',
				fail: (err) => {
					console.error('跳转PLM失败:', err);
					pageHelper.showModal('跳转失败', '无法跳转至研发项目管理系统，请稍后再试');
				}
			});
			console.log('跳转PLM系统');
		} catch (err) {
			console.error('跳转PLM异常', err);
			pageHelper.showModal('跳转失败', '无法跳转至研发项目管理系统，请稍后再试');
		}
	}

	/**
	 * 格式化显示项目信息
	 * @param {*} info 项目信息
	 * @returns 格式化后的项目信息
	 */
	static formatDisplayInfo(info) {
		if (!info) return null;

		return {
			id: info._id,
			title: info.PROJECT_TITLE || '未命名项目',
			desc: info.PROJECT_DESC || '',
			type: info.PROJECT_TYPE || 'normal',
			color: this.getProjectColor(info.PROJECT_TYPE),
			createTime: timeHelper.timestamp2Time(info.PROJECT_ADD_TIME),
			status: info.PROJECT_STATUS || 0
		};
	}
	
	/**
	 * 验证项目ID是否有效
	 * @param {string} projectId 项目ID
	 * @returns {boolean} 是否有效
	 */
	static isValid(projectId) {
		return projectId && typeof projectId === 'string' && projectId.trim().length > 0;
	}
	
	/**
	 * 清理所有项目缓存
	 * @returns {Promise<boolean>} 是否成功
	 */
	static async clearAllProjects() {
		try {
			// 使用缓存辅助类清理项目相关缓存
			await cacheHelper.clear('project');
			console.log('项目缓存清理成功');
			return true;
		} catch (err) {
			console.error('清理项目缓存失败:', err);
			return false;
		}
	}
}

// 添加项目常量
ProjectBiz.PROJECT_OA_NAME = 'oa';

module.exports = ProjectBiz; 